import java.util.Stack;

public class 有效的括号 {
    public static void main(String[] args) {
        String s="[]([)]";
        System.out.println(isValid(s));
    }

    public static boolean isValid(String s) {
        //1.特判
        if(s.isEmpty()) return true;
        //2.创建辅助栈
        Stack<Character> stack = new Stack<>();
        //3.遍历
        for(char c : s.toCharArray()){
            if(c == '('){
                stack.push(')');
            }else if(c == '['){
                stack.push(']');
            }else if(c == '{'){
                stack.push('}');
                //若为左括号，则往栈中存放右括号
                //若为右括号，如果 栈为空 或者 该右括号与取出的栈顶元素不一样，则返回false;

            }else if(stack.isEmpty() || c != stack.pop()){
                return false;
            }
        }
        //4.返回
        return stack.isEmpty();
    }
}
